package com.ruoyi.system.domain;


import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.time.LocalDateTime;

@Data
@TableName("file_upload")
public class FileUpload {
    /**
     * 文件记录ID，唯一标识，自增生成
     */
    @TableId(value = "id", type = IdType.AUTO)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 业务类型，如 "company", "order", "user"
     */
    private String businessType;

    /**
     * 业务实体ID，与业务表的主键关联
     */
    private String businessId;

    /**
     * 文件类型，如 "credit_code", "business_license", "travel_permit"
     */
    private String fileType;

    /**
     * 原始文件名
     */
    private String fileName;

    /**
     * 文件存储路径或URL
     */
    private String filePath;

    /**
     * 文件大小（字节）
     */
    private Long fileSize;

    /**
     * 文件扩展名，如 "pdf", "jpg"
     */
    private String fileExtension;

    /**
     * 文件MIME类型，如 "application/pdf"
     */
    private String mimeType;

    /**
     * 上传者ID，如用户ID
     */
    private String uploadedBy;

    /**
     * 文件上传时间
     */
    private LocalDateTime uploadTime;

    /**
     * 文件状态：pending, approved, rejected, deleted
     */
    private String status;

    /**
     * 访问权限：public, private, restricted
     */
    private String accessLevel;

    /**
     * 文件元数据，JSON格式，如 {"resolution": "1920x1080"}
     */
    private JSONObject metadata;

    /**
     * 分片上传信息，JSON格式，如 {"chunk_id": "chunk123", "total_chunks": 5}
     */
    private JSONObject chunkInfo;

    /**
     * 文件描述或备注
     */
    private String description;

    /**
     * 记录创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 记录更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
}